1. Related Applications
This application claims priority to U.S. patent application Ser. No. 09/894,928 filed Jun. 28, 2001, entitled “METHODS AND SYSTEMS FOR PAGE-INDEPENDENT SPOOL FILE SHEET ASSEMBLY,” which claims priority to U.S. patent applications Ser. Nos. 09/681,409 filed Mar. 30, 2001, entitled “METHODS AND SYSTEMS FOR PRINT-PROCESSOR-BASED PRINTER STATUS DETECTION AND PRINT TASK DISTRIBUTION” and Ser. No. 09/681,416 filed Mar. 30, 2001, entitled “METHODS AND SYSTEMS FOR PRINT-PROCESSOR-BASED PRINT TASK ERROR RECOVERY”, both of which claim priority to U.S. patent application Ser. No. 09/681,208 filed Feb. 22, 2001, entitled “METHODS AND SYSTEMS FOR PRINT-PROCESSOR-MODIFIED PRINTING,” which claims priority to U.S. patent application Ser. No. 60/261,132 filed Jan. 11, 2001 entitled “METHODS AND SYSTEMS FOR PRINT-PROCESSOR-MODIFIED PRINTING.”
2. Field of the Invention
The present invention relates to a printing system, and particularly, to a printing system in a multiple printing device (or printer) environment, wherein the printing system is designed to carry out centralized management of a shared printer from multiple printing sources, such as a PC, where the printing sources directly despool, the print data to the printing device based upon instructions or requirements as contained within a print job ticket.
3. Background
With the emergence of software and hardware components of computer systems, users are able to employ the systems to perform a variety of tasks. For example, a user may utilize a software application, such as a word processor, spreadsheet, or other application, to create a file or document. Once created, the document may be printed on a local, remote, or network printing device.
In a computer system that includes various client computing devices (e.g. one or more PC's, servers, etc.) and a printing device connected via a network, the utilization of the networked system to print a file or document traditionally includes the use of print queues on a centralized computing device, commonly referred to as a print server. A print queue lines up print jobs for a particular network printing device. Thus, for example, when a number of documents are to be printed by a network printer, the documents are ordered in a print queue on the print server and pulled one at a time off the queue for printing. Print jobs are commonly executed in the same order that they were placed on the print queue, but may be prioritized based on other criteria, such as by the size or type of the documents that are to be printed.
When a user initiates a print command at one of the client computing devices, the client despools print data for the print job to a print queue that is located on the print server, which is associated with a corresponding network printer. When it is time to remove the print job from the queue, the print server despools the print data from the print queue to the network printer. While this method for network printing enables a variety of client computer devices to utilize a network printer, the method requires a large amount of network traffic since the print data of each print job must be despooled twice over the network. Furthermore, the traditional method causes a loss of bi-directional communication, resulting in a loss of error handling and/or a loss of job completion notices.
Other methods include using a print provider at the client to open a connection to the network printer through the use of a particular protocol, such as TCP/IP, Novell Netware, or Apple Talk, and attempting to spool data directly to the printer. However, since a network printer is commonly shared among a variety of clients, the printer must serialize the spooling and printing of print jobs that arrive simultaneously. As such, the printer must order subsequent attempts to despool print data, wherein one print job is blocked while another print job is being printed. Alternatively, one print job is despooled into firmware memory or onto a disk drive at the printer while another print job is being printed. These methods cause the client computer device to consume CPU cycles and/or to generate additional network traffic. Furthermore, there is no centralized management of the print jobs and thus no prioritization as to the order in which the print jobs are processed.
One attempt to reduce the amount of network traffic required in performing network printing includes an operating system at the client that allows journaled data to be despooled to the print queue rather than the traditional print data. The amount of journaled data is assumed to be less in comparison to the amount of traditional print data. Therefore, the amount of network traffic is reduced. However, this attempt requires a copy of the corresponding printer driver to be located on the print server, further requiring the maintenance and/or licensing of an extra printer driver. Moreover, this attempt does not address the loss of bi-directional communication, nor the additional costs of CPU cycles on the server to render print data, nor the overhead of journal data on network traffic. These several systems are explained below.
FIG. 1 depicts a shared printing device 108 that is being shared without print system management or centralized management. Printing device 108 is connected to client computing device 80 having an application program 84 contained thereon capable of providing print data and a means by which to initiate a print job. Client computing device 80 also includes a printer driver 88, a spooler 92, a print processor 100 and a port manager 96. application 84 writes the print information (comprising print data and print instructions) to printer driver 88, which then spools this information to spooler 92. Spooler 92 may despool the print information to port manager 96, or optionally it may utilize print processor 100 to control RAW (printer ready) data 102 or EMF (Enhanced Metafile Format) data 104. Typically, each printing source 80 (shown as a client computing device, which is interchangeably used with printing source herein, thus also being identified with the number 80), such as a client computing device 80, or a server (not shown) of some sort, competes with each other printing source (e.g., those shown as 112) connected over network 70 to establish a connection to despool a print job to printing device 108. An open connection is granted by printing device 108 to printing source 80, and printing source 80 despools the print data to printing device 108. During this period, any request by another printing source 112 to open a connection with printing device 108, thus attempting to despool their print data to printing device 108, will either be blocked, or be denied. In essence, every other printing source 112 must wait for the connection to become available before they can despool the print data to printing device 108. Upon completion of the print job, printing source 80 communicates to printing device 108 that the connection can be closed. At this time, other printing sources 112 are allowed to establish an open connection. Typically though, each printing source 112 will either have to wait for the connection to become unblocked, or continuously poll the printing device 108 for an opportunity to establish an open connection with the printing device 108.
This approach of unmanaged devices suffers in that it results in an disorderly method of establishing a connection from printing source(s) 80 or 112 to printing device 108 to download and print existing print data. Moreover, in the case of polling, it is possible that a print job could inadvertently be starved out indefinitely in the case of a heavy job request environment. Likewise, without management of the printing system, other algorithms for establishing preferences between print jobs, other than first-in-first-out, cannot be utilized as these algorithms consider factors in preference such as the size and age of each print job.
Traditionally, centralized management of shared printing devices is done with a print queue on a print server. Generally, each printing source (and also other client computing devices or printing sources) sends the print job information, RAW data and/or EMF data, and the associated print job data to the printer server, requesting that the print job be printed on one or more specified printing devices. Each printing device managed by the print server has a print queue. The print server places each print job on the corresponding print queue, wherein the print server subsequently despools each of the print jobs from the print queue to one or more of the printing devices in some organized manner, such as first-in-first-out (FIFO).
While more efficient and more user friendly than a non-managed print system, this approach suffers in that it requires the print data to be despooled over the network twice, once to the printer server from the printing source, and once to the printing device(s) from the printer server. This results in double the amount of traffic over the network, in terms of both data and time. This method also requires sufficient storage resources, such as disk space, to store the print data a second time on the printer server. An example of such a printing system or environment may be a printing system including a printing source running the Microsoft Windows 95, 98 or Me NT/2K or XP Operating System, which sends a print job to a shared printer managed by a Windows NT/2000, XP, or Novel Netware print server.
FIG. 2 illustrates the current state of the art that attempts to solve the problems of traditional centrally managed printing systems by deferring the rendering of print data to printer server 116. In such systems, each printing source 80 or 112 sends the print job information and journaled print instructions (i.e., EMF data) to printer server 116, requesting that the print job be printed on one or more specified printing devices 108. Each printing device 108 managed by print server 116 has a print queue 120 and a printer driver 136 on print server 116 associated with corresponding print queue 120. Print server 116 places each print job on corresponding print queue 120, wherein print server 116 renders or plays back the journaled print instructions to associated print driver 136. Following this, printer server 116 despools the print jobs from print queue 120 to one or more of printing devices 108 in some organized manner, such as first-in-first-out (FIFO). This solution improves on the traditional model by assuming that the journaled data is substantially smaller in size, thus requiring less disk space for storage. This solution also improves upon the traditional model by decreasing the amount of traffic over network 70, both in terms of data and time.
Although an improvement, the approach of the current state of the art suffers in that it requires the journaled print instructions to be despooled over network 70, along with print data 106. This results in a greater amount of traffic over network 70, both in terms of data and time, and also requires sufficient storage resources, such as disk space, to store the journaled print instructions on printer server 116, as well as requiring space to render each print job. This current approach also suffers in that it requires sufficient CPU resources on print server 116 to render the print data with corresponding print driver 120. It also restricts the user from selecting a print driver 136, such that the user is forced to use the pre-assigned print driver for print queue 120 on print server 116. An example of such a system is a printing source running the Microsoft Windows NT/2000 or XP Operating System, which sends a print job to a shared printer managed by a Windows NT/2K printer sever.
U.S. Pat. No. 6,115,132 to Canon, entitled “Printing System that Transmits Job Information Independently of Print Data,” is an improvement over current systems. The technology disclosed in this patent provides a client computing device that transmits only job information of print data to a printer server, wherein the server manages a print order in accordance with the job information, and if printable, the client transmits the print data directly to a printer. In this invention, after the print is completed, the printer notifies the server of a print completion, and upon reception of this print completion notice, the server instructs the client to delete the print data. This invention further teaches that in a print system on a network configured as above, the network traffic is not increased, a large memory capacity is not necessary for the server, thus allowing the server load to be reduced, the job management of the server can be performed by the client, the completion of a print operation can be monitored, and a print operation is possible even if the server is in an error state. In this invention, only the print job information is transmitted over the network to the print server. The print data is later directly despooled from the printing source to the printing device(s).
This patent improves on the current art by eliminating the need to despool the print data or print instructions (i.e., journaled data) to the print server along with the print job information. Instead, only the printjob information is sent to the print server, which is maintained on a print queue. The print server grants print job requests to despool the print data in some organized manner, such as first-in-first-out (FIFO), by sending the IP address of the printing device to the printing source. The printing source, using the IP address of the printing device, establishes an open connection to the printing device and despools the print data. Upon completion, the printing source communicates to the printing device that the connection can be closed. The print server maintains availability of the printing device(s) and print job completion by continuously polling the printing device(s) for printer status, such as with SNMP.
While an improvement, the technology in this patent suffers in two major ways. First, this approach suffers in that the progress and/or state of the despooled print job on the printing devices must be maintained by periodic polling on the printing device(s), thus increasing activity on the network as well as requiring continuous CPU cycles on the print server. Second, the progress and/or state of the despooled print job can be lost or become invalid if the communication link from the print server and the printing device(s) is lost, and/or the printing device(s) become unresponsive.